package com.ys.day30.p3Properties;

import java.io.InputStream;
import java.util.Properties;

/**
 * 描述:
 *配置文件工具类
 *  * 作用：磁盘配置文件socket.properties加载到内存
 *  * 加载步骤：
 *  * 1 定义Properties对象
 *  * 2 将socket.properties配置文件使用当前线程的类加载器加载到JVM的内存中
 *  * 3 定义静态方法让外界获取IP地址和端口号
 *
 * @author CodeYang
 * @version 2021/1/12 23:27
 */
public class PropertiesUtils {

    private  static Properties properties = new Properties();
    // 1: 将磁盘上的 properties文件 加载进入--->JVM -在转为InputSteram---> Properties集合
    //静态代码块执行(先对象一步): 操作完成 将配置文件信息转为 properties集合

    static {
        try (
            /**
             * 链式编程:
             * 1 : 获得 运行时当前线程对象 Thread.currentThread
             * 2:  获得但花钱线程的类加载器 getContextClassLoader
             * 3:  获取类加载器的输入流,参数时配置文件相对于JVM实际加载目录的文件路径 getResourceAsStream
             */
            InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream("data.properties");
        ){
            // 把输入流转为Pro集合  ---> pro.load(InputStream)
            properties.load(stream);

        } catch (Exception e){
            System.out.println("pro加载失败");
            e.printStackTrace();
        }



    }

    /**
     * 根据key来获取pro集合里的key的值
     * @param key 外界传入key 例如socket.server.ip
     * @return 返回对应key的var 没有返回null 如:返回localhost 192.168.1.1
     */
    public static String getString(String key){
        return properties.getProperty(key,null);
    }

    /**
     * 返回端口
     * @param key
     * @return
     */
    public  static  int getInt(String key){
        String property = properties.getProperty(key);
        return Integer.parseInt(property);
    }
}
